﻿using TaleWorlds.Localization;

namespace MarriageFertility.Texts
{
    public static class RelationText
    {
        public static TextObject EmptyText => new TextObject();
        
        public static TextObject HusbandText => new TextObject("{=MF_HusbandText}Husband");
        public static TextObject WifeText => new TextObject("{=MF_WifeText}Wife");
        public static TextObject ExHusbandText => new TextObject("{=MF_ExHusbandText}Ex-Husband");
        public static TextObject ExWifeText => new TextObject("{=MF_ExWifeText}Ex-Wife");
        public static TextObject SexFriendText => new TextObject("{=MF_SexFriendText}Lover");

        // In-law relationships
        public static TextObject HusbandFatherText => new TextObject("{=MF_HusbandFatherText}Father-in-law (Husband's Father)");
        public static TextObject HusbandMotherText => new TextObject("{=MF_HusbandMotherText}Mother-in-law (Husband's Mother)");
        public static TextObject WifeFatherText => new TextObject("{=MF_WifeFatherText}Father-in-law (Wife's Father)");
        public static TextObject WifeMotherText => new TextObject("{=MF_WifeMotherText}Mother-in-law (Wife's Mother)");
        public static TextObject SonInLawText => new TextObject("{=MF_SonInLawText}Son-in-law");
        public static TextObject DaughterInLawText => new TextObject("{=MF_DaughterInLawText}Daughter-in-law");
        public static TextObject ElderBrotherWifeText => new TextObject("{=MF_ElderBrotherWifeText}Elder Brother's Wife");
        public static TextObject YoungerBrotherWifeText => new TextObject("{=MF_YoungerBrotherWifeText}Younger Brother's Wife");
        public static TextObject ElderSisterHusbandText => new TextObject("{=MF_ElderSisterHusbandText}Elder Sister's Husband");
        public static TextObject YoungerSisterHusbandText => new TextObject("{=MF_YoungerSisterHusbandText}Younger Sister's Husband");

        // Parent relationships
        public static TextObject FatherText => new TextObject("{=MF_FatherText}Father");
        public static TextObject MotherText => new TextObject("{=MF_MotherText}Mother");

        // Sibling relationships
        public static TextObject ElderBrotherText => new TextObject("{=MF_ElderBrotherText}Elder Brother");
        public static TextObject ElderSisterText => new TextObject("{=MF_ElderSisterText}Elder Sister");
        public static TextObject YoungerBrotherText => new TextObject("{=MF_YoungerBrotherText}Younger Brother");
        public static TextObject YoungerSisterText => new TextObject("{=MF_YoungerSisterText}Younger Sister");

        // Child and grandchild relationships
        public static TextObject SonText => new TextObject("{=MF_SonText}Son");
        public static TextObject DaughterText => new TextObject("{=MF_DaughterText}Daughter");
        public static TextObject GrandsonText => new TextObject("{=MF_GrandsonText}Grandson");
        public static TextObject GranddaughterText => new TextObject("{=MF_GranddaughterText}Granddaughter");

        // Grandparent relationships
        public static TextObject PaternalGrandfatherText => new TextObject("{=MF_PaternalGrandfatherText}Paternal Grandfather");
        public static TextObject PaternalGrandmotherText => new TextObject("{=MF_PaternalGrandmotherText}Paternal Grandmother");
        public static TextObject MaternalGrandfatherText => new TextObject("{=MF_MaternalGrandfatherText}Maternal Grandfather");
        public static TextObject MaternalGrandmotherText => new TextObject("{=MF_MaternalGrandmotherText}Maternal Grandmother");

        // Aunt and uncle relationships
        public static TextObject PaternalElderUncleText => new TextObject("{=MF_PaternalElderUncleText}Paternal Elder Uncle");
        public static TextObject PaternalYoungerUncleText => new TextObject("{=MF_PaternalYoungerUncleText}Paternal Younger Uncle");
        public static TextObject PaternalAuntText => new TextObject("{=MF_PaternalAuntText}Paternal Aunt");
        public static TextObject MaternalUncleText => new TextObject("{=MF_MaternalUncleText}Maternal Uncle");
        public static TextObject MaternalAuntText => new TextObject("{=MF_MaternalAuntText}Maternal Aunt");

        // Cousin relationships
        public static TextObject ElderMaleCousinText => new TextObject("{=MF_ElderMaleCousinText}Elder Male Cousin");
        public static TextObject YoungerMaleCousinText => new TextObject("{=MF_YoungerMaleCousinText}Younger Male Cousin");
        public static TextObject ElderFemaleCousinText => new TextObject("{=MF_ElderFemaleCousinText}Elder Female Cousin");
        public static TextObject YoungerFemaleCousinText => new TextObject("{=MF_YoungerFemaleCousinText}Younger Female Cousin");

        // Niece and nephew relationships
        public static TextObject NieceText => new TextObject("{=MF_NieceText}Niece");
        public static TextObject NephewText => new TextObject("{=MF_NephewText}Nephew");

        // Special cases
        public static TextObject YouText => new TextObject("{=MF_YouText}You");
        public static TextObject CompanionText => new TextObject("{=MF_CompanionText}Companion");
        public static TextObject WandererText => new TextObject("{=MF_WandererText}Wanderer");
        public static TextObject NotableText => new TextObject("{=MF_NotableText}Notable");
        public static TextObject RuralNotableText => new TextObject("{=MF_RuralNotableText}Rural Notable");
        public static TextObject HeroText => new TextObject("{=MF_HeroText}Hero");

        // Generic fallback
        public static TextObject RelativeOfPlayerText => new TextObject("{=MF_RelativeOfPlayerText}Relative");

        public static string PersonRelation => new TextObject("{=MF_PersonRelation}Clan relationships changed to individual relationships").ToString();
    }
}